package com.admin_system.service;

import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 定义处理 Excel 数据的服务接口，包含处理 Excel 数据的方法。
 */
public interface ExcelTemplateService {
    /**
     * 处理 Excel 数据的方法。
     *
     * @param dataFile        前端上传的 Excel 数据文件
     * @param replacementText 用于替换表头括号内文字的文本
     * @return 处理结果的字符串信息
     * @throws IOException 处理文件时可能抛出的 IO 异常
     */
    String processData(MultipartFile dataFile, String replacementText) throws IOException;
    
    /**
     * 处理 Excel 数据并返回压缩包文件资源。
     *
     * @param dataFile        前端上传的 Excel 数据文件
     * @param replacementText 用于替换表头括号内文字的文本
     * @return 包含所有生成Excel文件的压缩包资源
     * @throws IOException 处理文件时可能抛出的 IO 异常
     */
    Resource processDataAndZip(MultipartFile dataFile, String replacementText) throws IOException;
    
    /**
     * 处理 Excel 数据并返回压缩包文件资源以及超过人数限制的班级信息。
     *
     * @param dataFile        前端上传的 Excel 数据文件
     * @param replacementText 用于替换表头括号内文字的文本
     * @param includePdf      是否包含 PDF 文件
     * @return Map 包含两个键值对：
     *         - "resource": 包含所有生成 Excel 文件的压缩包资源
     *         - "overSizedClasses": 超过人数限制的班级列表
     * @throws IOException 处理文件时可能抛出的 IO 异常
     */
    Map<String, Object> processDataAndZipWithOverSizedClasses(MultipartFile dataFile, String replacementText, boolean includePdf) throws IOException;
}    